package com.dishdex.menuhub.console.util;

import com.dishdex.menuhub.console.domain.category.CategoryLevelTwoVO;
import com.dishdex.menuhub.module.module.category.entity.Category;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * ClassName:
 * Package: com.dishdex.menuhub.console.util
 * Description:
 *
 * @Author:
 * @Create 2025/9/30 10:58
 * @Version 1.0
 */

public final class CategoryTreeHelper {
    private CategoryTreeHelper() {
    }

    /*
     * 从第二层开始，无限进行递归构建children，即构建List<CategoryLevelTwo> children;
     * 该方法需要两个参数；
     * 第一个参数就是父节点的Id；
     * 第二个参数就是groupMap——>按parentId进行分组的Map
     * 有了这两个参数，就可以获取父节点的孩子
     * */
    public static List<CategoryLevelTwoVO> getChildren(Long categoryId, Map<Long, List<Category>> groupMap) {
        //创建父节点的孩子列表
        List<Category> categoryList = groupMap.get(categoryId);
        //递归到最后一层时，如果其没有孩子，那么就设置为new ArrayList
        if (categoryList == null || categoryList.isEmpty()) {
            return new ArrayList<>();
        }
        //创建返回列表
        List<CategoryLevelTwoVO> resultList = new ArrayList<>();
        //构建VO
        for (Category category : categoryList) {
            CategoryLevelTwoVO categoryLevelTwoVO = new CategoryLevelTwoVO();
            categoryLevelTwoVO.setId(category.getId() == null ? -1 : category.getId());
            categoryLevelTwoVO.setCategoryImage(category.getCategoryImage() == null ? "" : category.getCategoryImage());
            categoryLevelTwoVO.setCategoryName(category.getCategoryName() == null ? "" : category.getCategoryName());
            categoryLevelTwoVO.setChildren(getChildren(category.getId(), groupMap));
            resultList.add(categoryLevelTwoVO);
        }
        return resultList;
    }
}